package com.dragon.modules.yuegou.model.marketing;

import com.dragon.modules.yuegou.entity.marketing.ActivityEntity;
import com.dragon.modules.yuegou.enums.marketing.ActivityStatus;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 抽奖活动表模型类
 * 
 * @author pbuilder generated
 * @date 2019-08-13 17:02:06
 * @company sgy
 * @version 2.0
 * @see Length 长度限制
 * @see NotNull 对象非空
 * @see NotEmpty 字符串、集合、表、数组非空
 */
public class Activity extends ActivityEntity {

	@ApiModelProperty("所属商圈")
	private String busdName;

	@ApiModelProperty("活动奖品列表")
	List<ActivitySpuRef> list;

	public String getBusdName() {
		return busdName;
	}

	public void setBusdName(String busdName) {
		this.busdName = busdName;
	}

	public List<ActivitySpuRef> getList() {
		return list;
	}

	public void setList(List<ActivitySpuRef> list) {
		this.list = list;
	}

	/**
	 * 构造一个空抽奖活动表模型对象
	 */
	public Activity(){
		super();
	}
	
	/**
	 * 依据实体对象的信息构造一个抽奖活动表模型对象
	 * 
	 * @param entity 实体对象
	 */
	public Activity(ActivityEntity entity){
		super(entity);
	}

	/**
	 * 依据其它对象的信息构造一个抽奖活动表模型对象
	 * 
	 * @param other 其它对象
	 */
	public Activity(Activity other){
		super(other);
	}


	@Override
	public String getId() {
    	return id;
    }

    /**
	 * 设置
	 * 
	 * @param id 
	 * @return 当前对象
	 */
    public Activity id(String id) {
    	this.id = id;
    	return this;
    }

	@Override
	public String getBusdId() {
    	return busdId;
    }

    /**
	 * 设置商圈id
	 * 
	 * @param busdId 商圈id
	 * @return 当前对象
	 */
    public Activity busdId(String busdId) {
    	this.busdId = busdId;
    	return this;
    }

	@Override
	public String getActivityName() {
    	return activityName;
    }

    /**
	 * 设置
	 * 
	 * @param activityName 
	 * @return 当前对象
	 */
    public Activity activityName(String activityName) {
    	this.activityName = activityName;
    	return this;
    }

	@Override
	public String getImg() {
    	return img;
    }

    /**
	 * 设置图片
	 * 
	 * @param img 图片
	 * @return 当前对象
	 */
    public Activity img(String img) {
    	this.img = img;
    	return this;
    }

	@Override
	public String getDefaultMsg() {
    	return defaultMsg;
    }

    /**
	 * 设置默认提示
	 * 
	 * @param defaultMsg 默认提示
	 * @return 当前对象
	 */
    public Activity defaultMsg(String defaultMsg) {
    	this.defaultMsg = defaultMsg;
    	return this;
    }

	@Override
	public String getFortunateMsg() {
    	return fortunateMsg;
    }

    /**
	 * 设置中奖提示
	 * 
	 * @param fortunateMsg 中奖提示
	 * @return 当前对象
	 */
    public Activity fortunateMsg(String fortunateMsg) {
    	this.fortunateMsg = fortunateMsg;
    	return this;
    }

	@Override
	public String getUnfortunateMsg() {
    	return unfortunateMsg;
    }

    /**
	 * 设置未中奖提示
	 * 
	 * @param unfortunateMsg 未中奖提示
	 * @return 当前对象
	 */
    public Activity unfortunateMsg(String unfortunateMsg) {
    	this.unfortunateMsg = unfortunateMsg;
    	return this;
    }

	@Override
	public String getRepeatMsg() {
    	return repeatMsg;
    }

    /**
	 * 设置重复抽奖提示
	 * 
	 * @param repeatMsg 重复抽奖提示
	 * @return 当前对象
	 */
    public Activity repeatMsg(String repeatMsg) {
    	this.repeatMsg = repeatMsg;
    	return this;
    }

	@Override
	public LocalDateTime getStartTime() {
    	return startTime;
    }

    /**
	 * 设置有效期开始时间
	 * 
	 * @param startTime 有效期开始时间
	 * @return 当前对象
	 */
    public Activity startTime(LocalDateTime startTime) {
    	this.startTime = startTime;
    	return this;
    }

	@Override
	public LocalDateTime getEndTime() {
    	return endTime;
    }

    /**
	 * 设置有效期结束时间
	 * 
	 * @param endTime 有效期结束时间
	 * @return 当前对象
	 */
    public Activity endTime(LocalDateTime endTime) {
    	this.endTime = endTime;
    	return this;
    }

	@Override
	public Integer getPersonTimesLimit() {
    	return personTimesLimit;
    }

    /**
	 * 设置每人抽奖总次数
	 * 
	 * @param personTimesLimit 每人抽奖总次数
	 * @return 当前对象
	 */
    public Activity personTimesLimit(Integer personTimesLimit) {
    	this.personTimesLimit = personTimesLimit;
    	return this;
    }

	@Override
	public Integer getDayTimesLimit() {
    	return dayTimesLimit;
    }

    /**
	 * 设置每人每天抽奖次数
	 * 
	 * @param dayTimesLimit 每人每天抽奖次数
	 * @return 当前对象
	 */
    public Activity dayTimesLimit(Integer dayTimesLimit) {
    	this.dayTimesLimit = dayTimesLimit;
    	return this;
    }

	@Override
	public String getTriggerConditions() {
    	return triggerConditions;
    }

    /**
	 * 设置触发条件：0-核销成功、 1-停车缴费成功、 2-累计签到、 3-打开APP/小程序、 4-注册
	 * 
	 * @param triggerConditions 触发条件：0-核销成功、 1-停车缴费成功、 2-累计签到、 3-打开APP/小程序、 4-注册
	 * @return 当前对象
	 */
    public Activity triggerConditions(String triggerConditions) {
    	this.triggerConditions = triggerConditions;
    	return this;
    }

	@Override
	public Integer getDays() {
    	return days;
    }

    /**
	 * 设置累计签到天数
	 * 
	 * @param days 累计签到天数
	 * @return 当前对象
	 */
    public Activity days(Integer days) {
    	this.days = days;
    	return this;
    }

	@Override
	public String getActivityRules() {
    	return activityRules;
    }

    /**
	 * 设置活动规则
	 * 
	 * @param activityRules 活动规则
	 * @return 当前对象
	 */
    public Activity activityRules(String activityRules) {
    	this.activityRules = activityRules;
    	return this;
    }

	@Override
	public String getCreatedBy() {
    	return createdBy;
    }

    /**
	 * 设置创建人ID
	 * 
	 * @param createdBy 创建人ID
	 * @return 当前对象
	 */
    public Activity createdBy(String createdBy) {
    	this.createdBy = createdBy;
    	return this;
    }

	@Override
	public LocalDateTime getCreatedTime() {
    	return createdTime;
    }

    /**
	 * 设置创建时间
	 * 
	 * @param createdTime 创建时间
	 * @return 当前对象
	 */
    public Activity createdTime(LocalDateTime createdTime) {
    	this.createdTime = createdTime;
    	return this;
    }

	@Override
	public String getModifiedBy() {
    	return modifiedBy;
    }

    /**
	 * 设置更新人ID
	 * 
	 * @param modifiedBy 更新人ID
	 * @return 当前对象
	 */
    public Activity modifiedBy(String modifiedBy) {
    	this.modifiedBy = modifiedBy;
    	return this;
    }

	@Override
	public LocalDateTime getModifiedTime() {
    	return modifiedTime;
    }

    /**
	 * 设置更新时间
	 * 
	 * @param modifiedTime 更新时间
	 * @return 当前对象
	 */
    public Activity modifiedTime(LocalDateTime modifiedTime) {
    	this.modifiedTime = modifiedTime;
    	return this;
    }

	@Override
	public ActivityStatus getStatus() {
    	return status;
    }

    /**
	 * 设置[枚举]状态：0-待开始-WAIT、1-进行中-DOING、2-已停止-STOP、3-已过期-EXPIRED
	 * 
	 * @param status [枚举]状态：0-待开始-WAIT、1-进行中-DOING、2-已停止-STOP、3-已过期-EXPIRED
	 * @return 当前对象
	 */
    public Activity status(ActivityStatus status) {
    	this.status = status;
    	return this;
    }
}
